昨天看了 Laravel 怎麼使用 Symfony 的 Request 物件來建立自己的 Request,今天我們來試看看怎麼依樣畫葫蘆,在我們自己的套件上加上一個 Request 物件。
我們先在框架專案內,包含了 symfony/http-foundation
這個套件。所以我們專案內的 composer.json
變成了
{
"name": "recca/reccaval-framework",
"description": "a test project for mimicking laravel/framework",
"type": "library",
"license": "MIT",
"autoload": {
"psr-4": {
"Reccaval\\": "src/"
}
},
"authors": [
{
"name": "Recca Chao",
"email": "flamerecca711@gmail.com"
}
],
"require": {
"symfony/http-foundation": "^7.0"
}
}
接著建立一個 src/Foundation/Request.php
內容如下
<?php
namespace Reccaval\Foundation;
use Symfony\Component\HttpFoundation\Request as SymfonyRequest;
class Request extends SymfonyRequest
{
public function capture()
{
return SymfonyRequest::createFromGlobals();
}
}
這邊的邏輯只有直接使用 Symfony Request,沒有增加複雜的內容
接著,我們推到專案的 repo 內,並加上標籤 0.0.2
https://github.com/flamerecca/reccaval-framework/releases/tag/0.0.2
加上標籤之後,我們到 packagist 看一下
https://packagist.org/packages/recca/reccaval-framework
可以看到多了一個標籤。
接著,我們到範例專案裡面,調整一下相依的版本號
"require": {
"recca/reccaval-framework": "^0.0"
}
接著我們執行 composer update
,順利的話就可以看到以下訊息
Upgrading recca/reccaval-framework (0.0.1 => 0.0.2)
看到這個訊息,代表我們成功的更新了套件
我們試看看能不能成功的使用套件的內容。我們將 hello.php
改成
<?php
use Reccaval\Foundation\Request;
// Register the Composer autoloader...
require __DIR__.'/../vendor/autoload.php';
echo (new Request)->capture()->getBaseUrl();
順利的話,我們就會在畫面看到 /hello.php
這個路徑
到這邊,我們引用 Symfony 與更新套件的部分就測試完成囉!